<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
	 xmlns="http://www.w3.org/1999/xhtml"	 
     xmlns:xhtml="http://www.w3.org/1999/xhtml"	
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     xmlns:fn="http://www.w3.org/2005/xpath-functions" 
     xmlns:xdomea="http://www.xdomea.de/V2.1.0"        	  	 
     exclude-result-prefixes="xhtml xsl xs fn xdomea">
     
     <xsl:template name="getIdName">
	     	<xsl:choose>
	     		<xsl:when test="fn:local-name(.) = 'Feldgruppe'">
	     			<xsl:value-of select="./xdomea:Name"/>
	     		</xsl:when>
	     		<xsl:when test="fn:local-name(.) = 'Unterfeldgruppe'">
	     			<xsl:value-of select="./xdomea:Name"/>
	     		</xsl:when>
	     		<xsl:when test="fn:local-name(.) = 'Feld'">
	     			<xsl:value-of select="./xdomea:Name"/>
	     		</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="./xdomea:Identifikation/xdomea:ID"/>
					<xsl:if test="./xdomea:Identifikation/xdomea:NummerImUebergeordnetenContainer">
					 	- <xsl:value-of select="./xdomea:Identifikation/xdomea:NummerImUebergeordnetenContainer"/>
					</xsl:if>									
				</xsl:otherwise>
			</xsl:choose>	     	
	</xsl:template>
	
     <!-- Zeigt ein Check Icon wenn true -->
     <xsl:template name="checkBestaetigung">
	     	<xsl:choose>
				<xsl:when test=". = 'true' or . = '1'">
					<img src="../images/icon_checked.gif" alt="Symbol: Angehakte Auswahlbox" title="Erledigt" />
				</xsl:when>
				<xsl:when test=". = 'false' or . = '0'">
					<img src="../images/icon_unchecked.gif" alt="Symbol: Durchkreuzte Auswahlbox" title="Nicht angefordert" />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="."/>
				</xsl:otherwise>
			</xsl:choose>
     </xsl:template>
     
     <!-- Formatiert ein String -->
     <xsl:template name="outputValue">
	    <xsl:variable name="dateFormat">^(\d{4})-(\d{2})-(\d{2})(.(\d{2}):(\d{2}):(\d{2})\.\d.)?$</xsl:variable>
	    
	    <xsl:variable name="dateValue" select="fn:normalize-space(.)"/>
	    
	    <xsl:variable name="isInteger" select="xdomea:isIntegerElement(fn:local-name())"/>

    	<xsl:analyze-string regex="{$dateFormat}" select="$dateValue">
    		<xsl:matching-substring>
    			<xsl:number value="regex-group(3)" format="01"/>
    			<xsl:text>.</xsl:text>
    			<xsl:number value="regex-group(2)" format="01"/>
    			<xsl:text>.</xsl:text>
    			<xsl:number value="regex-group(1)" format="0001"/>
    			<!-- Datum mit Uhrzeit -->
    			<xsl:if test="fn:string-length(regex-group(5))>0">
    				<xsl:text> </xsl:text>
	    			<xsl:number value="regex-group(5)" format="01"/>
	    			<xsl:text>:</xsl:text>
	    			<xsl:number value="regex-group(6)" format="01"/>
	    			<xsl:text>:</xsl:text>
	    			<xsl:number value="regex-group(7)" format="01"/>
    			</xsl:if>
    		</xsl:matching-substring>
    		<xsl:non-matching-substring>
    			<xsl:choose>
	    			<xsl:when test="$isInteger">
						<xsl:value-of select="."/>
					</xsl:when>
					<xsl:otherwise>
	    				<xsl:call-template name="checkBestaetigung"/>
	    			</xsl:otherwise>
	    		</xsl:choose>
    		</xsl:non-matching-substring>
    	</xsl:analyze-string>
	    
    	<!-- Immer -->
    	<xsl:if test=".[fn:exists(@codeName)]"><xsl:text> </xsl:text>(<xsl:value-of select="@codeName"/>)</xsl:if>
     </xsl:template>
     
     <!-- Tabboxen -->
     <xsl:template name="tabBox">
     	<xsl:param name="firstPosition"/>
     	
		<div class="xdv-vertTabs xdv-cf">
			<ul class="tabList">
				<xsl:for-each select="fn:current() | following-sibling::*[fn:node-name(.) = fn:node-name(fn:current())]">
					<xsl:variable name="pos"><xsl:value-of select="count(preceding::*)"/></xsl:variable>
					<li class="{fn:local-name()}_{$pos}"><a href="#{fn:local-name()}_{$pos}"><xsl:call-template name="translator"/><xsl:text> </xsl:text><xsl:value-of select="fn:position()"></xsl:value-of></a></li>
				</xsl:for-each>
			</ul>
			
			<xsl:for-each select="fn:current() | following-sibling::*[fn:node-name(.) = fn:node-name(fn:current())]">
				<xsl:variable name="pos"><xsl:value-of select="count(preceding::*)"/></xsl:variable>
				<div id="{fn:local-name()}_{$pos}" class="xdv-content">
					<h4 class="xdv-{fn:local-name()}_{$pos} xdv-accessibility"><xsl:value-of select="fn:local-name()"/><xsl:text> </xsl:text><xsl:value-of select="fn:position()"/></h4>
					<div class="xdv-vertTabsTop"></div>
					<div class="xdv-vertTabsMiddle xdv-cf">
						<xsl:for-each select="child::*">
							<xsl:choose>
								<xsl:when test="not(fn:local-name() = 'Parameter')">
									<p class="xdv-row {fn:local-name()}">
										<span class="xdv-label xdv-vertTabLabel_1"><xsl:call-template name="translator"/></span>
										<span class="xdv-value"><xsl:call-template name="outputValue"/></span>
									</p>
								</xsl:when>
								<xsl:otherwise>
									<p class="xdv-row {fn:local-name()}">
										<span class="xdv-toplabel xdv-cf">
											<span class="xdv-title"><xsl:call-template name="translator"/></span>
											<xsl:for-each select=".//child::*">
												<span class="xdv-label xdv-vertTabLabel_2"><xsl:call-template name="translator"/></span>												
													<xsl:if test="not(fn:local-name() = 'AllgemeinerRueckgabeparameter' or fn:local-name() = 'Vertretungsstatus')">
														<span class="xdv-value"><xsl:call-template name="outputValue"/></span>
													</xsl:if>												
											</xsl:for-each>
										</span>
									</p>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:for-each>
					</div>
					<div class="xdv-vertTabsBottom"></div>													
				</div>
			</xsl:for-each>
		</div>
     </xsl:template>
     
     <!-- VerticalBox -->
     <xsl:template name="verticalBox">
     	<xsl:param name="firstPosition"/>
     	
     	<xsl:for-each select="fn:current() | following-sibling::*[fn:node-name(.) = fn:node-name(fn:current())]">
			<xsl:variable name="pos"><xsl:value-of select="fn:position()"/></xsl:variable>
			<table>
				<tr class="xdv-title"><td colspan="3" valign="top" class="xdv-headerCell_1 xdv-cell_1"><h3><xsl:value-of select="fn:position()"/>. <xsl:text> </xsl:text><xsl:call-template name="translatorForList"/></h3></td></tr>
				<xsl:for-each select="child::*">
					<xsl:call-template name="structure1"/>	
		     	</xsl:for-each>
	     	</table>
		</xsl:for-each>
     </xsl:template>
     
     <!-- Liest die Felder für Strukturbaum aus der xml Datei -->
     <xsl:function name="xdomea:readStructureTreeElements">
     	<!--<xsl:variable name="fields" select="document('../xml_inc/structureTreeElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name"/>
     	<xsl:value-of select="$fields"/>-->
     	<xsl:for-each select="document('../xml_inc/structureTreeElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name">
            <xsl:value-of select="."/>
        </xsl:for-each>
     </xsl:function>
     
     <!-- Liest die Felder für Strukturbaum aus der xml Datei -->
     <xsl:function name="xdomea:readQualifiedNameFromStructureTreeElements">
     	<!--<xsl:variable name="fields" select="document('../xml_inc/structureTreeElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:name"/>
     	<xsl:value-of select="$fields"/>-->
     	<xsl:for-each select="document('../xml_inc/structureTreeElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:name">
            <xsl:value-of select="."/>
        </xsl:for-each>
     </xsl:function>
     
     <!-- Prüft ob der gegebene Element ein Strukturelement ist -->
     <xsl:function name="xdomea:isStructureTreeElement" as="xs:boolean">
     	<xsl:param name="element"/>
     	
     	<xsl:variable name="fields" select="xdomea:readStructureTreeElements()"/>
     	<xsl:value-of select="fn:exists(fn:index-of($fields,$element))"/>
     </xsl:function>
     
     <!-- Details für Strukturbaum -->
     <xsl:template name="structureTreeDetails">     
     	<div id="xdv-Details_{fn:local-name()}_{count(preceding::*)}" class="xdv-strukturBaumDetails">
     		<strong><xsl:value-of select="fn:local-name()" />&#160;<xsl:value-of select="*[fn:position()=1 and count(child::*)=0]" /></strong>
			<table>
				<xsl:choose>
					<xsl:when test="xdomea:isStructureTreeElement(fn:local-name())">
						<tr>
							<td>
								<xsl:call-template name="contentChild2" />
							</td>
						</tr>
					</xsl:when>
					<xsl:otherwise>
						<xsl:apply-templates select="child::*[count(child::*) = 0]" mode="innerContent1"/>
					</xsl:otherwise>
				</xsl:choose>
			</table>			
		</div>	
     </xsl:template>

	<!-- Liest die Felder für Vertikalbox aus der xml Datei -->
     <xsl:function name="xdomea:readVerticalBoxElements">
     	<xsl:variable name="fields" select="document('../xml_inc/verticalBoxElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name"/>
     	<xsl:value-of select="$fields"/>
     </xsl:function>     
     
      <!-- Prüft ob der gegebene Element ein VerticalBox Element ist -->
     <xsl:function name="xdomea:isVerticalBoxElement" as="xs:boolean">
     	<xsl:param name="element"/>
     	
     	<xsl:variable name="fields" select="xdomea:readVerticalBoxElements()"/>
     	<xsl:value-of select="fn:exists(fn:index-of($fields,$element))"/>
     </xsl:function>
     
     <!-- Liest die Integer Felder aus der xml Datei -->
     <xsl:function name="xdomea:readIntegerElements">
     	<xsl:variable name="fields" select="document('../xml_inc/integerElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name"/>
     	<xsl:value-of select="$fields"/>
     </xsl:function>     
     
      <!-- Prüft ob der gegebene Element ein Integer Element ist -->
     <xsl:function name="xdomea:isIntegerElement" as="xs:boolean">
     	<xsl:param name="element"/>
     	
     	<xsl:variable name="fields" select="xdomea:readIntegerElements()"/>
     	<xsl:value-of select="fn:exists(fn:index-of($fields,$element))"/>
     </xsl:function>
     
     <!-- Liest die versteckte Felder für Strukturbaum aus der xml Datei -->
     <xsl:function name="xdomea:readHiddenStructureTreeElements">
     	<xsl:variable name="fields" select="document('../xml_inc/hiddenStructureTreeElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name"/>
     	<xsl:value-of select="$fields"/>
     </xsl:function>
     
     <!-- Prüft ob der gegebene Element ein versteckter Strukturelement ist -->
     <xsl:function name="xdomea:isHiddenStructureTreeElement" as="xs:boolean">
     	<xsl:param name="element"/>
     	
     	<xsl:variable name="fields" select="xdomea:readHiddenStructureTreeElements()"/>
     	<xsl:value-of select="fn:exists(fn:index-of($fields,$element))"/>
     </xsl:function>
     
     <!-- Liest die Felder mit subKnoten in der Linke Navi aus der xml Datei -->
     <xsl:function name="xdomea:readLeftNaviSubElements">
     	<xsl:variable name="fields" select="document('../xml_inc/leftNaviSubElements.xml')/xdomea:struktur-element/xdomea:feld/xdomea:local-name"/>
     	<xsl:value-of select="$fields"/>
     </xsl:function>
     
     <!-- Prüft ob der gegebene Element ein Felder mit subKnoten in der Linke Navi ist -->
     <xsl:function name="xdomea:isLeftNaviSubElement" as="xs:boolean">
     	<xsl:param name="element"/>
     	
     	<xsl:variable name="fields" select="xdomea:readLeftNaviSubElements()"/>
     	<xsl:value-of select="fn:exists(fn:index-of($fields,$element))"/>
     </xsl:function>
     
</xsl:stylesheet>